package com.reportes;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRResultSetDataSource;

import com.Reporte;
import com.util.Util;

import exceptions.InvalidArgumentException;

public class Municipio extends Reporte {

	private static final String ID_ESTADO = "estado";
	private String criterioSQL = " WHERE TRUE";

	@Override
	public void VerificarParametros(HttpServletRequest request)
			throws InvalidArgumentException {
		Integer id = Util.toInteger(request.getParameter(ID_ESTADO));
		if (id != null)
			criterioSQL = " AND estado.id= "+ id;
	}

	@Override
	public Object clone() throws CloneNotSupportedException {
		Municipio reporte = new Municipio();
		copyAttributesTo(reporte);
		return reporte;
	}

	@Override
	protected JRDataSource executeQuery(Connection connection)
			throws SQLException {
		StringBuffer sql =
			new StringBuffer("SELECT")
					.append(" Estado.codigo as ecodigo,")
					.append(" Estado.nombre as enombre,")
					.append(" Municipio.codigo as mcodigo,")
					.append(" Municipio.nombre as mnombre,")
					.append(" Municipio.poblacion")
					.append(" FROM")
					.append(" estado")
					.append(" INNER JOIN municipio ON (estado.id = municipio.estado_id)")
					.append(criterioSQL)
					.append(" ORDER BY estado.nombre, municipio.nombre");
		Statement statement = connection.createStatement();
		ResultSet rs = statement.executeQuery(sql.toString());
		return new JRResultSetDataSource(rs);
	}

}
